package com.wangjie.pattern.proxy;

import com.wangjie.pattern.proxy.service.StudentService;

/**
 * @author jieshao
 * @date 2022/6/22 12:07
 *
 * 静态代理
 *
 * 优点：在不修改目标对象功能的前提下，能通过代理对象对目标对象的功能进行扩展
 * 缺点：代理对象需要与目标对象实现一样的接口，当需要代理的类很多时，会创建大量代理类，一旦接口增加方法，目标对象和代理对象都需要维护
 */
public class StaticProxy implements StudentService {
    private StudentService target;

    public StaticProxy(StudentService target) {
        this.target = target;
    }

    @Override
    public void login() {
        System.out.println("权限校验");
        this.target.login();
        System.out.println("日志记录");
    }

    @Override
    public void register() {
        System.out.println("权限校验");
        this.target.register();
        System.out.println("日志记录");
    }
}